// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/gl/gl_fence_apple.h"

#include "ui/gl/gl_bindings.h"

namespace gfx {

GLFenceAPPLE::GLFenceAPPLE()
{
    glGenFencesAPPLE(1, &fence_);
    glSetFenceAPPLE(fence_);
    DCHECK(glIsFenceAPPLE(fence_));
    glFlush();
}

bool GLFenceAPPLE::HasCompleted()
{
    DCHECK(glIsFenceAPPLE(fence_));
    return !!glTestFenceAPPLE(fence_);
}

void GLFenceAPPLE::ClientWait()
{
    DCHECK(glIsFenceAPPLE(fence_));
    glFinishFenceAPPLE(fence_);
}

void GLFenceAPPLE::ServerWait()
{
    DCHECK(glIsFenceAPPLE(fence_));
    ClientWait();
}

GLFenceAPPLE::~GLFenceAPPLE()
{
    DCHECK(glIsFenceAPPLE(fence_));
    glDeleteFencesAPPLE(1, &fence_);
}

} // namespace gfx
